package tree;

import pojo.TreeNode;

/**
 * 功能描述: 树的深度
 * 2024/05/18
 * <p>
 * ZhangYi
 * 树的深度：通常是指从根节点到某个节点的路径上边的数目。对于根节点，其深度定义为0，根的子节点深度为1，
 * 依此类推。因此，一个节点的深度是它在树中的层级减去1。从整体来看，树中任意节点的最大深度即为树的深度。
 */
public class TreeDepthUtils {


    /**
     * 功能描述: 左子树或者右子树最大的树的高度
     *
     * @param root
     * @return int
     */
    public static int getTreeDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return Math.max(getTreeDepth(root.left),
                        getTreeDepth(root.right)) + 1;
    }


    public static void main(String[] args) {
        TreeNode treeNode = generateMirrorTree();
        System.out.println(getTreeDepth(treeNode));
    }
    private static TreeNode generateMirrorTree() {
        TreeNode treeNode = new TreeNode(1,
                                         "1");
        treeNode.left = new TreeNode(2,
                                     "2");
        treeNode.right = new TreeNode(2,
                                      "2");

        treeNode.left.left = new TreeNode(4,
                                          "4");

        treeNode.left.left.left = new TreeNode(5,
                                           "5");



        return treeNode;
    }
}
